/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package ec.edu.espe.ccsoft.mantenimiento.bean;

import ec.edu.espe.ccsoft.mantenimiento.modelos.Rol;
import ec.edu.espe.ccsoft.mantenimiento.servicios.RolServicio;
import ec.edu.espe.ccsoft.mantenimiento.utils.ManejoAcciones;
import ec.edu.espe.ccsoft.mantenimiento.utils.Mensajes;
import java.io.Serializable;
import java.util.Calendar;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import org.primefaces.context.RequestContext;

/**
 *
 * @author misahaelfernandez
 */
@ManagedBean
@SessionScoped
public class RolBean extends ManejoAcciones implements Serializable {

    @EJB
    private RolServicio rolServicio;
    private List<Rol> roles;
    private Rol rol;
    private Mensajes mensaje;

    @PostConstruct
    public void init() {
        roles = rolServicio.obtenerTodosActivos();
        mensaje = new Mensajes();
    }
    
    public void cargarNuevo(){
        rol=new Rol();
        super.nuevoRegistro();
        tituloDialogo = tituloDialogo + " Rol";
    }
    
    public void cargarModificar() {
        super.modificarRegistro();
        tituloDialogo = tituloDialogo + " Rol";
    }

    public void cargarDetalles() {
        super.detallesRegistro();
        tituloDialogo = tituloDialogo + " Rol";
    }
    
    public void guardar() {
        try {
            if (rolServicio.obtenerPorNombre(rol.getNombre())) {
                rol.setFechaCreacion(Calendar.getInstance().getTime());
                rol.setEstado(true);
                this.rolServicio.crear(rol);
                roles.add(rol);
                mensaje.addMessageSuccefull("Información", "El rol ha sido creado con éxito");
                RequestContext.getCurrentInstance().update("@form");
                RequestContext.getCurrentInstance().execute("PF('dlDialogVar').hide();");
            } else {

                mensaje.addMessageSuccefull("Error", "El rol ya se encuentra registrado");

            }
        } catch (Exception e) {
            mensaje.addMessageError("Error", "Error al crear el rol " + e.getMessage());
        }
    }
    
    public void modificar() {
        try {
            this.rolServicio.actualizar(rol);
            if (!rol.getEstado()) {
                roles.remove(rol);
                mensaje.addMessageSuccefull("Información", "El rol ha sido eliminado con éxito");
            } else {
                
                mensaje.addMessageSuccefull("Información", "El rol ha sido modificado con éxito");
            }
            RequestContext.getCurrentInstance().update("@form");
            RequestContext.getCurrentInstance().execute("PF('dlDialogVar').hide();");
        } catch (Exception e) {
            mensaje.addMessageError("Error", "Error al modificar el rol " + e.getMessage());
        }
    }

    public List<Rol> getRoles() {
        return roles;
    }

    public Rol getRol() {
        return rol;
    }

    public void setRol(Rol rol) {
        this.rol = rol;
    }

}
